草庐IT

c++ - OpenCV Visual Studio ntdll.dll

全部标签

c - 在 Win32 TIB 中保存数据

Thread-InformationBlock应该广为人知,可以用来访问一些重要的信息。但是我可以用它来保存数据吗?我已经看到该结构在偏移14h(x86)/28h(x86-64)处有一个用于任意指针的槽。我可以使用这个指针从我自己的调度程序指向我自己的线程结构吗?或者它会被其他东西覆盖吗? 最佳答案 您可以使用TlsAlloc()分配线程本地存储的函数。每个TLS索引都可以保存一个指针大小的值,因此如果需要,您可以使用TLS插槽指向更大的已分配数据结构。参见UsingThreadLocalStorage举个例子。

windows - ucrtbase.dll : An invalid parameter was passed to a function that considers invalid parameters fatal

我目前正在使用OpenCV进行个人项目,在程序执行过程中遇到了一些问题。在实现AKAZE+BOW识别器(对于我的问题似乎效果不佳)后,我想尝试SIFT(最终是SURF)实现。对于我的项目,我正在关注github上的这个项目我在Windows10上使用VS2015(社区)和OpenCV2.4.13。如标题所述,我遇到的问题在于ucrtbase.dll,它在执行期间获取无效参数(如果我正确读取其他线程,该dll应该是Windows10中的操作系统库)。当forcicle移动到第二次迭代时(也就是当它应该为BOW训练获取另一个图像的特征时)出现问题,这就是执行停止并出现标题错误的时候。我尝试

c - 如何使用 `FindResourceEx()` 和 `LoadResource()` 加载新菜单?

我正在使用WindowsAPI用C语言开发多语言Win32程序。它将允许用户选择界面的语言。根据MSDNdocumentation,我需要使用FindResourceEx()+LoadResource()并且不是不可靠的SetThreadLocale().我的问题是:我不知道如何从资源中加载菜单。考虑到下面的示例代码,应该如何修改它来加载和更新菜单?HMENUhMenu=GetMenu(hWnd);SetMenu(hWnd,NULL);DestroyMenu(hMenu);HRSRCrcMenu=FindResourceEx(NULL,RT_MENU,MAKEINTRESOURCE(I

c - 增加 Clion 中 C 程序的堆栈大小

如何为具有深度递归调用的C程序增加堆栈的最大大小?项目是否有任何配置可以指定可执行文件的堆栈或堆大小? 最佳答案 我通过在项目的CMakeList.txt中添加以下链接器标志解决了这个问题MATH(EXPRstack_size"16*1024*1024")#16Mbset(CMAKE_EXE_LINKER_FLAGS"-Wl,--stack,${stack_size}") 关于c-增加Clion中C程序的堆栈大小,我们在StackOverflow上找到一个类似的问题:

c - 将 SQL_BINARY 数组数据作为参数传递时如何避免零终止? (ODBC 驱动程序)

我刚刚了解到WindowsODBC驱动程序API需要一组SQL_BINARY数据作为输入参数,以零字节结束。尽管我没有在文档中找到这样的语句,但我通过使用以下代码执行存储过程发现了这一点:最小示例//ParameterbindingBYTEdata[10]={15,3,54,144,34,211,200,147,15,74};SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_BINARY,SQL_BINARY,10,0,data,0,NULL);//ProcedureexecutionSQLRETURNres=SQLExecDirect(hs

windows - SetDllDirectory 不级联,所以无法加载依赖DLL

我从一个目录执行一个exe,比如“C:/test”DLL位于目录“C:/test/dlls”中,因此,在此exe中,我调用:SetDllDirectory("C:/test/dlls");然后我打电话lib1=LoadLibrary("lib1.dll)和ptrTypepr=(ptrType)::GetProcAddress(lib1,"test")lib1.dll需要目录“C:/test/dlls”中的其他DLL,但是当我执行pr(...)时从GetProcAddress,我得到一个错误:"Theprogramcan'tstartbecauselib2.dllismissingfro

创建 .mid 文件 : writing a '\n' causes '\r\n' in Windows

我通过将字节写入文件并将其另存为.midi创建了一个.mid文件。我可以运行它并且它可以工作,但在某些特殊情况下它不会。如果我写入一个包含\n的字节(ASCII10),那么它将写入2个字节\r\n,这使得.mid不可运行。(这对于Windows机器来说是正常的,但在我的情况下并不理想。)编写\n的示例可能是在选择由\n表示的key时>。是否有一种解决方法来编写\n而不是\r\n或其他方法来确保写入的字节是ASCII10在Windows机器上?谢谢! 最佳答案 在linux/unix上,创建文件时指定"wb"还是"w"都没有关系。但是

对 Winapi 路径和文件名的说明(W 函数和 A 函数)

我已经尝试检查使用Wwinapi与A的重要性和原因,(W表示宽字符,A表示ascii,对吗?)我做了一个简单的例子,我收到了这样一个当前用户的临时路径:CHARpszUserTempPathA[MAX_PATH]={0};WCHARpwszUserTempPathW[MAX_PATH]={0};GetTempPathA(MAX_PATH-1,pszUserTempPathA);GetTempPathW(MAX_PATH-1,pwszUserTempPathW);printf("pathA=%s\r\npathW=%ws\r\n",pszUserTempPathA,pwszUserTem

c++ - DLL的普通只读存储器

我有两个控制台应用程序A1.exeA2.exe和一个DLL。两者都以Debug模式运行,优化关闭。有一个全局constchar*变量,我从这个dll导出并在A1和A2中导入://dll.hextern"C"{DLLEXPORTexternconstchar*str;}//dll.cppconstchar*str="qwerty123";我希望在DLL的只读部分中创建“qwerty123”,并且我希望Windows的内存管理器会将带有此字符串的实际内存映射到A1.exe的某个虚拟内存地址和A2.exe的不同虚拟地址并且不要创建真实的数据拷贝。我希望该dll中的所有函数定义也会发生这种情况

java - 使用 JNI 从 java 调用 fortran dll

我有一个Fortran格式的Fifp.dll,带有一个简单的voidRESET()函数,并尝试从我的Java代码中调用它。我做了一个简单的java测试类:publicclassTestJni{static{System.loadLibrary("Fifp");}publicnativevoidRESET();}我从中制作了一个.h文件,并编译了它。我还制作了一个桥接文件myBridge.c:#include#include"TestJni.h"externvoidRESET();JNIEXPORTvoidJNICALLJava_TestJni_RESET(JNIEnv*env,jobj